Computer science has forever grappled with solving the following, contrary statements: systems become more brittle as intelligence is distributed, but systems also become less scalable as intelligence is centralized. How can we enjoy the benefits of distributed scalability with the superior availability and reliability of centralization? There has been a steady evolution of tools and methods to answer this question. The advent of libraries and routines that could be included (linked) in multiple applications migrated to shared libraries that mitigated the need to rebuild every application when a referenced routine was changed. Later, the concept of objects promoted reuse and portability by only exposing necessary methods and properties to the using application. Today, we routinely use object brokers that provide objects as services to applications, further insulating developers from the intricacies of a desired capability while still providing the functionality required.
Another current example is the use of stored procedures to access database information rather than using specific structured query language (SQL) commands in a given application. This moves a large portion of database intelligence out of the application and into the database server, which effectively centralizes more of the intelligence while distributing the capability. A change can be made to the centralized stored procedure to fix a bug or add functionality to all applications that use the procedure without requiring a change to each application itself.
Today, however, we have no similar mechanism for minimizing intelligence required by one web application that needs to access the services of another web application. For example, to display employee information in a web application, one could use an employee lookup program. However, to use that application, one must know things such as the server the application is currently running on, the path to and name of the application, and what information the program needs to provide the desired service. All of this information may be encoded in a Universal Resource Locator (URL) or link. This is not necessarily a lot of information to maintain, but if any of that information changes, the link will break. As the number of copies of this link grow, and if the link itself becomes more complex, then the maintenance could become more significant.
Clearly, the information required by a web application can be even more involved in certain circumstances. For example, enabling applications with Top Tier's Drag and Relate (DnR) capability, while powerful, can require significantly more intelligence in the enabled application. Additionally, most DnR Enabled Applications (DEAs) need to know when they are DnR enabled, since displaying DnR links outside of DnR aware environments could be confusing to the user, and simply won't work if activated. Further, DEAs must encode information into the DnR links so the DnR servers understand what to do with the DnR link. Again, if any of that information changes, then the application will break. This approach becomes untenable in a large enterprise with many applications cross-linking each other.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need for the present invention.